package com.atguigu.microshop.coupon;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;

/**
 * 一：使用nacos作为微服务的配置中心的步骤
 * 1。引入依赖
 * <dependency>
 *             <groupId>com.alibaba.cloud</groupId>
 *             <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
 *         </dependency>
 *     </dependencies>
 * 2.创建一个bootstrap.properties文件，配置以下参数
 *     spring.application.name=micro-shop-coupon
 *      spring.cloud.nacos.config.server-addr=127.0.0.1:8848
 *3.在nacos后台配置一个dataid(例如本应用为micro-shop-coupon，那么dataid的名字就叫做 micro-shop-coupon.properties。规则 应用名.properties)
 * 4.给应用名.properties配置需要的参数
 *
 * 5.动态获取配置
 *   通过 @RefreshScope 动态刷新配置，再通过 @Value("${配置项的名字}") 注解获取所需动态配置参数
 *      注意：如果nacos配置中心里面和应用里面都配置了相同的配置项，优先使用nacos配置中心的配置项
 *
 * 二，细节
 *  1.命名空间：作用是配置隔离
 *      默认：public（保留空间），默认新添加的配置项都处于public下
 *      举例说明：在开发，调试，上线的模式下各有一套配置，可以使用命名空间来隔离配置
 *               也可以利用每个微服务来做隔离配置
 *  2.配置集：所有配置的集合
 *
 *  3.配置集id:类似文件名
 *    Data_id: 文件名
*   4.配置分组
 *   默认所有的分组都属于 DEFAULT_GROUP
 *
 * 在本项目中的应用场景
 *  每个微服务创建自己的命名空间，使用配置分组区分环境 dev,test,prop
 *
 * */

@SpringBootApplication
@EnableDiscoveryClient //nacos服务注解
public class MicroShopCouponApplication {

    public static void main(String[] args) {
        SpringApplication.run(MicroShopCouponApplication.class, args);
    }

    @RestController
    class EchoController {
        @GetMapping(value = "/echo/{string}")
        public String echo(@PathVariable String string) {
            return string;
        }
    }
}
